cmake_minimum_required (VERSION 2.8)

project (gen2lib)

# The version number.
set (GEN2_VERSION_MAJOR 0)
set (GEN2_VERSION_MINOR 1)

find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})

###########################################################################
############ Formatter
###########################################################################

SET (Formatter_SRCS
	src/Formatter/Formatter.h
	src/Formatter/CppFormatter.cpp 
	src/Formatter/CppFormatter.h
)

SOURCE_GROUP(Formatter FILES ${Formatter_SRCS})

###########################################################################
############ ObjectModel
###########################################################################

SET (ObjectModel_SRCS
	src/ObjectModel/BasicType.h
	src/ObjectModel/ClassMemberAccess.h
	src/ObjectModel/ClassType.cpp
	src/ObjectModel/ClassType.h
	src/ObjectModel/ItemBase.cpp
	src/ObjectModel/ItemBase.h
	src/ObjectModel/Method.cpp
	src/ObjectModel/Method.h
	src/ObjectModel/Type.h
	src/ObjectModel/TypeHierarchy.cpp
	src/ObjectModel/TypeHierarchy.h
	src/ObjectModel/Variable.h
)

SOURCE_GROUP(ObjectModel FILES ${ObjectModel_SRCS})

###########################################################################
############ Parser
###########################################################################

SET (Parser_SRCS
	src/Parser/Grammar.h
	src/Parser/Structs.h
	src/Parser/ModelBuilder.cpp
	src/Parser/ModelBuilder.h
	src/Parser/Parse.cpp
	src/Parser/Parse.h
)

SOURCE_GROUP(Parser FILES ${Parser_SRCS})

###########################################################################
############ SemanticModel
###########################################################################

SET (SemanticModel_SRCS
	src/SemanticModel/Analyser.cpp
	src/SemanticModel/Analyser.h
	src/SemanticModel/ConstraintIterator.h
	src/SemanticModel/Graph.h
	src/SemanticModel/Model.cpp
	src/SemanticModel/Model.h
	src/SemanticModel/Node.cpp
	src/SemanticModel/Node.h
	src/SemanticModel/NodeIterator.h
	src/SemanticModel/Relation.cpp
	src/SemanticModel/Relation.h
	src/SemanticModel/RelationIterator.h
)

SOURCE_GROUP(SemanticModel FILES ${SemanticModel_SRCS})

###########################################################################
############ Includes
###########################################################################

SET (Includes_SRCS
	src/Formatter.h
	src/ObjectModel.h
	src/Parser.h
	src/SemanticModel.h
)

SOURCE_GROUP(Includes FILES ${Includes_SRCS})

###########################################################################
############ GlobalIncludes
###########################################################################

SET (GlobalIncludes_SRCS
	include/Formatter
	include/ObjectModel
	include/Parser
	include/SemanticModel
)

SOURCE_GROUP(GlobalIncludes FILES ${GlobalIncludes_SRCS})

###########################################################################
###########################################################################

INCLUDE_DIRECTORIES(${gen2lib_SOURCE_DIR}/src)

#set(GEN2LIB_INCLUDE_DIR ${gen2lib_SOURCE_DIR}/include CACHE PATH "Path to gen2 include files" FORCE)
set(GEN2LIB_INCLUDE_DIR ${gen2lib_SOURCE_DIR}/include PARENT_SCOPE)


SET (gen2lib_SRCS
	${Formatter_SRCS}
	${ObjectModel_SRCS}
	${Parser_SRCS}
	${SemanticModel_SRCS}
	${Includes_SRCS}
)
	
add_library(gen2lib ${gen2lib_SRCS})
